1. Field of the Invention
The present invention is directed to testing the stability and efficiency of a database query engine.
2. Background Art
A query optimizer is a component of a database management system that attempts to determine the most efficient way to execute a query. If properly designed and implemented, query optimizers can significantly increase the efficiency of database management system (DBMS) query processing.
Testing the stability and efficiency of any database system is challenging because a query execution plan chosen by a query optimizer is influenced by factors that include the size of data, distribution of the data in underlying database tables, and also the type of query that is to be executed to manipulate the data, as well as other factors.
Different methods to test the performance of a query engine have been proposed. One such method of testing includes selecting a query with one or more predicates and providing it to a query optimizer within the DBMS. The query optimizer generates a query execution plan (QEP) and then the query is executed based on the generated QEP. A user may then use parameters, such as query execution time, to determine the query optimizer's performance.
One of the limitations of this method of testing is that the query optimizer is most likely to generate the same QEP for a given query that was previously generated for the same query. This limitation would exist if there were no changes to any underlying costing structure associated with the query optimizer between invocations of the query. As a result, when using this method, the query execution engine associated with the query optimizer would be tested for only a limited number of code or execution paths.
Accordingly, systems, methods and computer program products are needed that comprehensively test the stability and efficiency of a database query engine while overcoming the limitations of existing testing approaches.